System and method for detecting and verifying digitized content over a computer network

ABSTRACT

A system for detecting digitized content and selecting matches from a master verification database. The detection of digitized content is performed using a verification database which contains a master table of contents identifiers and songprints for corresponding digitized content. A network server is programmed to receive selections of a table of contents identifiers from computers, and to request selections of songprint identifiers from the computers and selects matches from the master verification database.

BACKGROUND OF THE INVENTION

[0001] This invention relates to the field of online digital contentdistribution and more particularly, to a system and method forfacilitating music distribution and authentication over a communicationsnetwork.

[0002] The internet has created a highway for users and companies toshare digitized content. Online services allow digitized content storedon servers to be shared by multiple users via the internet. Onlineservices also allow users to play digitized content stored in anInternet-connected repository.

[0003] It is advantageous for online service providers to detect andverify whether or not the user has a physical copy of digitized content,such as a CD or DVD, prior to allowing the user access to the digitizedcontent.

SUMMARY OF THE INVENTION

[0004] The present invention system identifies and authenticatesdigitized content, such as compact audio disc (hereinafter “CD-Audio,”or “CD”) residing in a CD-Audio-compatible drive of a computer andverifies that the CD is authentic or an exact replica. However, thepresent invention is not limited to CD verification. In certainembodiments of the invention, digitized content stored on DVDs or othermedium including a physical disc, disc drive, or in solid state memorydevices, may be verified. The invention may be practiced in a number ofelectronic devices, including personal computers, disc players such asCD players and DVD players, and other electronic devices. In certainembodiments according to the present invention, a verification databaseis created from a set of master CDs. The verification database containsrecords of CDs and a corresponding table-of-contents, also known as atable-of-contents identifier, (hereinafter “TOC”) and correspondingselected audio data from the CD.

[0005] After the verification database is created, verification of a CDto the master CD may be performed. The CD is first identified bymatching the TOC from the CD against the verification database. Usingthe TOC data the system identifies one or more master CDs with a similarTOC. The identified CDs are then authenticated by matching selectedaudio data from the CD against the verification database created from aset of master CDs.

BRIEF DESCRIPTION OF THE DRAWINGS

[0006]FIG. 1. details the overall architecture of the system;

[0007]FIG. 2. details the verification database creation system;

[0008]FIG. 3. depicts key client and server operations duringidentification and verification.

DETAILED DESCRIPTION OF THE INVENTION

[0009] In the following embodiments of the invention, common referencenumerals are used to represent the same components. If the features ofan embodiment are incorporated into a single system, these componentscan be shared and perform all the functions of the describedembodiments.

[0010] In FIG. 1, a Server 111 and a Client 121 communicate with eachother via a communications network 113 for the purpose of identifyingand authenticating or verifying digital content. In one embodiment ofthe present invention, a user inserts a CD for verification in a CDReader 123, the Client 121 controls the CD Reader 123 as necessary toacquire data from the CD. The Client 121 communicates the data to theServer 111.

[0011] The Client 121 is a general purpose personal computer programmedto read CDs from the CD reader 123. The Client 121 is typically locatedat a remote location 117 which is connected to the network 113 via acommunications link 119. In one embodiment the Client 121 is used by anInternet user computing from their home or office. The communicationslink 119 may be a dial-in modem connecting to an internet serviceprovider or a broad-band service such as DSL or cable internet access.

[0012] The Server 111 is programmed to receive information from theClient 121 for verification with information stored in the VerificationDatabase 106. The Server 111 is typically programmed to facilitatemultiple connections from Clients 121 and 129, each with a CD Reader 123and 131 respectively, and connected to the Network 113 via acommunications link 115. The Clients 121 and 129 are also connected tothe Network 113 via communications likes 119 and 127 respectively.Typically the Server 111 and the Verification Database 106 are locatedat a Server Facility 101 to optimize system performance. In anotherembodiment, the Server 111 may be located in a separate facility fromthe Verification Database 106. In a preferred embodiment of theinvention the Server 111 is a high performance micro-computer runningthe UNIX operating system.

[0013] Before the Server 111 can identify and verify CDs for the Client121, the corresponding CD data must be stored in the VerificationDatabase 106. An Encoding Computer 103 is programmed to read master CDsfrom a CD reader 105 and store data about the CD in the VerificationDatabase 106. Alternatively, data about the CD is computed from digitalaudio files stored on a computer that contain a copy of the audio datafound on a master CD.

[0014] The Verification Database 106 is comprised of a VerificationTable 107 and an Identification Table 109. Creation of the VerificationDatabase 106 is accomplished by computing and storing entries in thedatabase for each CD to be identified and verified by the EncodingComputer 103. Each database entry comprises several elements ofidentification and verification data which are computed from the TOC andaudio data extracted from an original, authentic CD title.

[0015] In one embodiment of the present invention the various componentsand computers of the system communicate with each other using a generalconnection-oriented protocol such as the Transmission ControlProtocol/Internet Protocol (TCP/IP), which is described inInternetworking with TCP/IP, 3d. ed., Douglas E. Comer, (1995), which ishereby incorporated by reference. However, the present invention is notlimited to TCP/IP or any other particular network architecture, softwareor hardware which may be described herein. The principles of theinvention apply to other communications protocols, networkarchitectures, hardware and software which may come to compete with oreven supplant the state of the art at the time of the invention.

[0016] In FIG. 2 the Verification Database 106 is comprised of twotables: an Identification Table 109 and a Verification Table 107. Eachentry in the Identification Table 109 comprises a subset of the TOC datafrom the corresponding CD title, and multiple subsets of TOC data arestored for each corresponding CD title. This data is used during theidentification phase of the disc verification procedure to quicklylocate CDs that have a TOC similar to the CD being identified. TheIdentification Table 109 is comprised of the following fields:

[0017] Disc Identifier—A value assigned during database creation thatuniquely identifies the CD.

[0018] TOC Identifier—A hash value computed from the CD TOC.

[0019] Disc Length—Total length (in blocks) of the audio portion of theCD.

[0020] First Track Length—Length (in blocks) of the first audio track onthe CD.

[0021] Last Track Length—Length (in blocks) of the last audio track onthe CD.

[0022] Shortest Track Length—Length (in blocks) of the shortest audiotrack on the CD.

[0023] Longest Track Length—Length (in blocks) of the longest audiotrack on the CD.

[0024] Disc Songprint—An identifying value computed from the CD audiodata. Once created, the entire Identification Table 109 may be sorted byand stored in ascending or descending order using the value of the DiscLength field to facilitate faster look ups.

[0025] In FIG. 2 the Verification Table 107 is comprised ofidentification and verification data that is both copied and computedfrom the corresponding CD title by the Encoding Computer 103. This datais used during the disc verification procedure to test the identity andvalidity of the CD being verified. The Verification Table 107 iscomprised of a number of individual keys. Each key is computed by theEncoding Computer 103 and stored in the Verification Table 107. Thevalue of each key is derived from audio data read from a certain regionof the CD by the CD Reader 105, as instructed by the Verification Table107. An entry in the Verification Table 107 is comprised of thefollowing fields:

[0026] Descriptive Data—Includes CD title and artist.

[0027] Disc Identifier—A value assigned during database creation thatuniquely identifies the CD.

[0028] TOC Identifier—A hash value computed from the CD TOC.

[0029] Disc Songprint—An identifying value computed from the CD audiodata.

[0030] Track Data—The following fields are included for each track:

[0031] Length—Length (in blocks) of the track

[0032] Alignment Guide Data—Data derived from the audio data of thetrack

[0033] Title—Textual title of the track

[0034] Track Songprint—An identifying value computed from the audio dataof the track.

[0035] Key Data—The following fields are included for each key:

[0036] Track—The number of the track which includes the key region.

[0037] Offset—The location of the key region within the specified track.

[0038] Alignment Guide Data—Data derived from the audio data in the keyregion.

[0039] Hash Data—A hash value computed from the audio data in the keyregion.

[0040] Key Songprint—An identifying value computed from the audio datain the key region.

[0041] The Encoding Computer 103 calculates a TOC identifier. A TOCidentifier is computed from the CD TOC data by computing a cryptographichash value using SHA-1 (Secure Hash Algorithm) of the concatenation ofthe lengths, in blocks, of each track on the CD represented as 4-bytevalues and truncating the resulting 20-byte hash value to 8 bytes.

[0042] The Encoding Computer 103 calculates a songprint. A songprint isa 128-byte value that represents the spectral content of a region of adigital audio recording. It is computed by the following steps:

[0043] The two stereo channels are averaged to produce a single channel.

[0044] The songprint region is divided into 512-byte chunks. Any partialchunks are discarded. Additionally, for each chunk, the followingcomputations are made:

[0045] The data is detrended by computing a linear regression andremoving the result.

[0046] A Hanning window is applied to the data.

[0047] A Fast Fourier Transform (FFT) is computed for the data.

[0048] The DC component of the result is discarded.

[0049] The squared magnitudes of each of the remaining spectralcomponents are computed.

[0050] The spectral components are divided into groups of 4 and averagedto produce 64 spectral components.

[0051] Each of the first 64 bytes of the songprint value is computed asfollows:

[0052] The mean of each of the 64 spectral components resulting fromeach chunk is computed.

[0053] The mean is converted to a logarithmic value by computing the log10 and multiplying by 10. Values less than 1×10⁻²⁰ are assigned thevalue −200.

[0054] The resulting dB value is scaled and shifted then converted to anunsigned integer byte value. The scale and shift amounts are chosen tomaximize resolution within the range (0-255) expressible in a singlebyte.

[0055] Each of the final 64 bytes of the songprint value is computed asfollows:

[0056] The standard deviation of each of the 64 spectral componentsresulting from each chunk is computed.

[0057] The standard deviation is converted to a logarithmic value bycomputing the log 10 and multiplying by 10.

[0058] The resulting dB value is scaled and shifted then converted to anunsigned integer byte value. The scale and shift amounts are chosen tomaximize resolution within the range (0-255) expressible in a singlebyte.

[0059] The Encoding Computer 103 uses the region to generate thesongprint; the region varies between the Disc and Track Songprints andthe Key Songprints. The Encoding Computer 103 selects the songprintregion by first identifying the length of any “silent” audio at thebeginning of the track. This is accomplished by reading 4096-byte blocksof audio data and computing a root-mean-square (RMS) of the amplitude ofthe samples (the two channels are averaged for each sample during thiscomputation).

[0060] The end of the initial silent portion of a track is located byfinding the first block that has an RMS amplitude which exceeds thepredefined threshold. The beginning of the songprint region is thencomputed by adding a predefined offset. The length of the songprintregion is a predefined value.

[0061] For Track Songprints, the RMS amplitude threshold for detectingthe end of the initial silence is 0.001. The predefined offset from theend of the initial silence to the beginning of the songprint region is30 seconds (30*75*2352 bytes). The predefined length of the songprintregion is 5 seconds (5*75*2352 bytes).

[0062] A Disc Songprint is defined as the Track Songprint for the firsttrack on the CD. The Key Songprint region is the same as the key region.This is because no silence detection or region offset is applied. TheKey Songprint region length, like the key region length, is 4096 bytes.

[0063] The Encoding Computer 103 generates a Track Alignment Guide. ATrack Alignment Guide comprises a 4-byte sample search value and a4-byte hash value computed from the audio data block midway through thetrack. If the track is an odd number of blocks in length, the block atthe midpoint is used. If the track is an even number of blocks inlength, the block immediately after the midpoint is used.

[0064] The 4-byte sample search value is the first 4 bytes of the audiodata block. The 4-byte hash value is computed by hashing the first 64bytes of the audio data block using the SHA-1 algorithm and truncatingthe result to 4 bytes.

[0065] The Encoding Computer 103 generates a Key Alignment Guide. A KeyAlignment Guide comprises eight 2-byte samples taken from the audio datacontained within a key region. The samples are taken at 292-sampleintervals starting with the first sample contained within the key region(samples offsets 0, 292, 584, 876, 1168, 1460, 1752, and 2044).

[0066] The Encoding Computer 103 generates a Key Hash Data. Key HashData is computed by hashing all the bytes contained within the keyregion using the SHA-1 algorithm and storing the entire 20-byte hashresult.

[0067] In FIG.1., the verification procedure is accomplished through asequence of processes and messages that are exchanged between a Client121 in which the CD to be verified is located, and a Server 111 whichqueries a Verification Database 106 as shown in more detail in FIG. 3.The Client 121 and the Server 111 communicate using a network 113. Inanother embodiment of the invention, the Server 111 may contain theVerification Database 106 internally.

[0068] In FIG. 3 block 301 the client begins the verification process.Typically the client may be programmed to begin the process whenever adisc is inserted into the CD reader 123. In block 303, the client readsthe Table-of-Contents data from the CD using the appropriate features ofthe client operating system. Also in block 303, the TOC data isformatted and placed into the Initial Request message. The InitialRequest message may be formatted to contain subsets of the TOC data, orthe complete TOC data. Also in block 303, the client computes the DiscSongprint for the CD according to the algorithm specified earlier andplaces it into the Initial Request message, which is sent to the server.

[0069] In block 305 Initial Request Processing is performed by theserver upon receipt of an Initial Request message from the client. Theserver receives the Initial Request message from the client and proceedsto extract the TOC and Disc Songprint. The server, using theIdentification Table, then locates the entry that best matches the TOCand Disc Songprint provided by the client. The server performs a binarysearch of the Identification Table (which is sorted by Disc Length) tofind the entry that most nearly matches the disc length specified in theTOC.

[0070] In block 305, beginning with the entry in the IdentificationTable identified above, the server compares all neighboring entries tothe TOC and Disc Songprint provided by the client. For each entry, theserver first tests whether the disc length specified by the TOC and thedisc length recorded in the table entry are within a specified limit.The server then computes the root-mean-square (RMS) of the differencesbetween each of the first-, last-, shortest-, and longest-track fieldsof the table entry and the corresponding data from the TOC. The RMSdifference must fall within a specified limit. Finally, the servercomputes the RMS difference between the corresponding data points (eachof the 128 bytes) in the table entry songprint and the Disc Songprintprovided by the client.

[0071] In block 307, the server selects the entry in the IdentificationTable that has the smallest RMS difference between the songprint and theone provided by the client, the Best Match. If that RMS difference doesnot fall within a specified limit, the verification fails and the serverconstructs a Disc Not Found message in block 309. If the RMS for theBest Match falls within the specified limit, the process proceeds toblock 311.

[0072] In another embodiment, the server computes the RMS differencebetween the client-provided and database-provided values for each of thedisc length, the first-, last-, shortest-, and longest-track fields, andeach of the 128 bytes of the songprint and weights those individualdifferences to compute a single weighted-difference value representingthe overall fit between the client-provided and database-provided data.The server selects as the Best Match the entry in the IdentificationTable that results in the smallest weighted-difference. In an alternateembodiment, the server selects all the entries which haveweighted-difference values less than a predefined threshold and attemptsto verify each of these Matches.

[0073] In block 311, the server locates the entries in the VerificationTable corresponding to the Best Match values. Because each entry in theVerification Table contains a large number of usable verification keys,in block 313, the server selects a smaller subset of key candidates thatwill be used in the current disc verification. The subset is selectedusing a pseudo-random sequence that is seeded with the client networkaddress and the current time reduced to half-day resolution (i.e., thesame key candidates will be selected for a given network address duringa given half day).

[0074] In block 313, the key region (the region of audio data on the CDfrom which each key was computed) is enlarged using the pseudo-randomsequence so that the actual key region starts at a pseudo-random offsetwithin the enlarged key region. In addition to the real key candidatesselected from the Verification Table entry, a set of decoy keys are alsogenerated, also using the address/time-seeded pseudo-random sequence(i.e., the same decoy key candidates will be generated for a givennetwork address during a given half day). The decoy keys are chosen soas not to overlap the audio data regions from which the real keys arederived. In an alternate embodiment, a random sequence is used to selectand adjust keys and generate decoy keys so that each verificationattempt by a client causes the server to specify a different set ofverification regions.

[0075] The server then proceeds to construction of a VerificationResponse message. The Verification Response message is constructed bythe server in response to an Initial Request message from the client. Itis also constructed in response to a Verification Request message fromthe client that fails the verification test as discussed below.

[0076] Also in block 313, from the key candidates selected duringInitial Request Processing, the server selects one or more keys andincludes the offset and length data for each key region in theVerification Response message. A key candidate is used only once duringa single disc verification. When all key candidates have been used andthe disc has not been successfully verified, the verification fails.

[0077] From the decoy key candidates selected during Initial RequestProcessing, the server selects one or more decoy keys and includes theoffset and length data for each key region in the Verification Responsemessage. A decoy key candidate is used only once during a single discverification. The server generates enough decoy keys during InitialRequest Processing so that the decoy keys are not exhausted before thedisc keys.

[0078] The state of the disc verification process is encrypted andincluded in the Verification Response message. This includes thepresumed identity of the disc, the selected key candidates, thegenerated decoy key candidates, and the key usage information (whichkeys/decoys have been requested from the client). The state informationis returned to the server by the client in the Verification Requestmessage and is decrypted by the server and used to restore the state ofthe verification process. The Track Alignment Guide data stored in theVerification Database entry is included in the Verification Responsemessage. Finally, the Verification Response message is sent to theclient.

[0079] In block 315, for each of the key regions requested by theserver, the client determines in which track the region resides, checksthe track alignment, and reads the requested data. The client beginstrack alignment by reading a block from the midpoint of that track andattempting to locate audio data that matches the Track Alignment GuideData supplied by the server. If the track alignment data is not found,the client reads and searches adjoining blocks until the alignment datais found or a predefined number of blocks have been searched.

[0080] The client then computes the offset between the expected locationof the track alignment data and the apparent location. After adjustingthe location of the requested audio data region by the alignment offsetcomputed, the client reads the audio data from the disc and includes itin the Verification Request message. The client includes the TOC data inthe Verification Request message since the server preserves no clientstate. The Encoded State Information included by the server in theVerification Response message is copied by the client unmodified intothe Verification Request message. The Verification Request message issent to the server. In an alternate embodiment, the client stateinformation is maintained by the server for the duration of the clientverification session and is not sent to or received from the client.

[0081] In block 317, the server receives the Verification Requestmessage from the client and proceeds to extract the Key Region data.Verification Request Processing is then performed by the server uponreceipt of a Verification Request message from the client. The EncodedState Information is extracted, decoded, and used to restore the stateof the verification process. For each key region supplied by the client,the server tests the client-supplied data against the corresponding KeyData stored in the disc's entry in the Verification Table. Any datasupplied by the client for a decoy key region is discarded.

[0082] The server then attempts to locate the actual key region withinthe enlarged key region data supplied by the client by locating theregion that provides the greatest number of values that match thecorresponding values in the Key Alignment Guide Data. The servercomputes a hash value, using the SHA-1 algorithm, of the key regionidentified in the alignment step. This hash value is compared with thevalue stored with the Key Data in the disc's entry in the VerificationTable. If the values match exactly, the verification is successful, andthe server constructs a Verified Response message. On the other hand, ifthe values do not match exactly, a Key Songprint is computed by theserver.

[0083] In block 319, a Key Songprint is computed from the key regionidentified in the alignment step. An RMS difference is computed betweenthe corresponding individual byte values of the songprint computed fromthe client-supplied data and the songprint that is stored with the KeyData in the disc's entry in the Verification Table. If the RMSdifference is less than or equal to a predefined threshold value, theverification is successful and the process follows the Yes path fromblock 319 to block 321 where the server constructs a Verified Responsemessage.

[0084] Returning to block 319, if the server determines the RMSdifference exceeds the threshold, the process continues to block 323 andif one or more of the key candidates selected during Initial RequestProcessing have not yet been requested from the client, the processfollows the Yes Path from block 323 to block 313 and the server proceedsto construct a new Verification Response message.

[0085] Returning to block 321, the Verified Response message isconstructed by the server upon completion of a successful verification.The server includes identifying information for the verified discincluding, for example, the disc's title and artist. Additionalinformation is included as required by the overall application.

[0086] The server also computes the offset between the expected locationof the key region within the enlarged key region and the actuallocation. This offset value is included in the Verified Response messageto enable the client to adjust data read operations in futureverifications. The server computes and encrypts authorization data, asrequired by the overall application, which the client can present tothird-parties as credentials certifying that the disc has been verified.The Verified Response message is sent to the client.

[0087] Returning to block 323, if the RMS difference exceeds thethreshold and all key candidates have been exhausted, the verificationfails. The process then follows the No path to block 325 where a NotVerified Response message is constructed by the server upon failing tolocate in the Identification Table an entry that acceptably matches thedisc being verified.

[0088] The client may also be programmed to respond in a particularmanner to any of the system's messages, including a Verified message, aNot Verified message, or a Not Found message. For example, if the CD isverified, the client may be programmed to display information about theCD, or to automatically play the CD.

1. In a system comprising a communications network connecting aplurality of network servers and a plurality of computers, a networkserver comprising: a verification database comprising; at least onemaster table of contents identifier corresponding to each of a pluralityof sets of digitized content; and at least one master songprintidentifier corresponding to each of the plurality of sets of digitizedcontent; and wherein the network server is programmed to; receive atleast one of a plurality of selections of table of contents identifiersfrom at least one of the plurality of computers; receive at least one ofa plurality of songprint identifiers from the at least one of theplurality of computers.
 2. The server of claim 1, further programmed toreceive one selection of table of content identifiers from the at leastone of the plurality of computers.
 3. The server of claim 1, furtherprogrammed to receive a songprint identifiers from the at least one ofthe plurality of computers.
 4. The server of claim 1, wherein the tableof content identifiers comprised of a concatenation of the lengths ofthe sets of digitized content.
 5. The server of claim 1, furtherprogrammed to request at least one of a plurality of regions ofdigitized content from the at least one of the plurality of computers.6. The server of claim 5, further programmed to request one region ofdigitized content from the at least one of the plurality of computers.7. The server of claim 5, wherein the request for one or more regions ofdigitized content is generated as a function of a pseudo-randomsequence.
 8. The server of claim 7, wherein the pseudo-random sequenceis a function of a network address of the at least one of the pluralityof computers.
 9. The server of claim 7, wherein the pseudo-randomsequence is a function of the time of day.
 10. The server of claim 7,wherein the pseudo-random sequence is a function of both a networkaddress of at least one of the plurality of computers and the time ofday.
 11. The server of claim 7, wherein the request for regions ofdigitized content is further comprised of a request for at least one ofa plurality of decoy regions of digitized content from the at least oneof the plurality of computers.
 12. The server of claim 11, wherein therequest for a at least one of a plurality of decoy regions of digitizedcontent is a function of a pseudo-random sequence.
 13. The server ofclaim 12, wherein the pseudo-random sequence is a function of a networkaddress of the at least one of the plurality of computers.
 14. Theserver of claim 12, wherein the pseudo-random sequence is comprising afunction of the time of day.
 15. The server of claim 12, wherein thepseudo-random sequence is comprising a function of both a networkaddress of the at least one of the plurality of computers and the timeof day.
 16. The server of claim 11, wherein the request for one or morethan regions of digitized content is further comprised of only onenon-decoy region of digitized content from the at least one of theplurality of computers.
 17. The server of claim 1, wherein theverification database is further comprised of only one master table ofcontents identifier for each of a corresponding plurality of sets ofdigitized content.
 18. The server of claim 1, wherein the verificationdatabase is further comprised of only one master songprint identifierfor each of a corresponding plurality of sets of digitized content. 19.The server claim 1, further programmed to verify whether the receivedtable of content identifier correlates with the master table of contentidentifier.
 20. The server of claim 1, further programmed to verifywhether the received table of content identifiers correlates perfectlywith the master table of content identifier.
 21. The server of claim 1,further programmed to verify whether the received songprint identifierscorrelates with the master songprint identifier.
 22. The server of claim1, further programmed to verify whether the received songprintidentifier correlates perfectly with any master songprint identifier.23. In a system comprising a communications network connecting aplurality of network servers and a plurality of computers, a networkserver comprising: a verification database comprising; at least onemaster table of contents identifier corresponding to each of a pluralityof sets of digitized content; and at least one master songprintidentifier corresponding to each of the plurality of sets of digitizedcontent; and wherein the network server is programmed to; receive atleast one of a plurality of selections of table of contents identifiersfrom at least one of the plurality of computers; receive at least one ofa plurality of selections of songprint identifiers from the at least oneof the plurality of computers; and as a function of whether or not thereceived selections of table of content identifiers correlate with themaster table of content identifier, request at least one of a pluralityof regions of digitized content from the at least one of plurality ofcomputers.
 24. The network server of claim 23, further programmed toverify whether the received selections of table of content identifierscorrelates perfectly with the master table of content identifiers. 25.In a system comprising a communications network connecting a pluralityof network servers and a plurality of computers, a network servercomprising: a verification database comprising; at least one mastertable of contents identifiers corresponding to each of a plurality ofsets of digitized content; and at least one master songprint identifiercorresponding to each of a plurality of sets of digitized content; andwherein the network server is programmed to; receive at least one of aplurality of selections of table of contents identifiers from at leastone of the plurality of computers; receive at least one of a pluralityof selections of songprint identifiers from the at least one of theplurality of computers; and as a function of whether or not the receivedselections of songprint identifiers correlate with any of the mastertable of content identifiers, request at least one region of digitizedcontent from the at least one of plurality of computers.
 26. The networkserver of claim 25, further programmed to verify whether the receivedselections of songprint identifiers correlate perfectly with any of themaster table of content identifiers.
 27. In a system comprising acommunications network connecting a plurality of network servers and aplurality of computers, a network server comprising: a verificationdatabase comprising; at least one master table of contents identifiercorresponding to each of a plurality of sets of digitized content; andat least one master songprint identifier corresponding to each of aplurality of sets of digitized content; wherein the network server isprogrammed to; receive at least one of a plurality of selections oftable of contents identifiers from at least one of the plurality ofcomputers; receive at least one of a plurality of selections ofsongprint identifiers from the at least one of the plurality ofcomputers; and as a function of whether or not the received selectionsof table of contents identifiers and selections of songprint identifierscorrelate with any of the plurality of master table of contentidentifier, request at least one of a plurality of regions of digitizedcontent from the at least one of plurality of computers.
 28. The networkserver of claim 27, further programmed to verify whether the receivedselections of table of content identifiers correlate perfectly with themaster table of content identifiers and the received selections ofsongprint identifiers correlate perfectly with the master songprintidentifiers.
 29. In a system comprising a communications network, atleast one of a plurality of network servers comprised of a verificationdatabase comprising at least one master table of contents identifiercorresponding to each of a plurality of sets of digitized content and atleast one master songprint identifier corresponding to each of aplurality of sets of digitized content and at least one of a pluralityof computers, the method of identifying digitized content stored on amedium comprising the steps: the network server receiving at least oneof a plurality of selections of table of contents identifiers from atleast one of the plurality of computers; and, the network serverreceiving at least one of a plurality of selections of songprintidentifiers from at least one of the plurality of computers.
 30. Themethod of claim 29, wherein the step of receiving at least one of aplurality of selections of table of contents identifiers comprisesreceiving one selection of table of content identifiers from the atleast one of the plurality of computers.
 31. The method of claim 29,wherein the step of receiving at least one of a plurality of selectionsof songprint identifiers comprises receiving one selection of songprintidentifiers from the at least one of the plurality of computers.
 32. Themethod of claim 29, further including the step of verifying whether oneof the received selections of table of content identifiers correlateswith any of the master table of content identifiers.
 33. The method ofclaim 29, further including the step of verifying whether one of thereceived selections of table of content identifiers correlates perfectlywith any of the master table of content identifiers.
 34. The method ofclaim 29, further including the step of verifying whether one of thereceived selections of songprint identifiers correlates with any of themaster songprint identifiers.
 35. The method of claim 29, furtherincluding the step of verifying whether one of the received selectionsof songprint identifiers correlates perfectly with any of the mastersongprint identifiers.
 36. In an electronic device containing one ormore sets of digitized content stored on a medium, the method ofgenerating table of contents identifiers comprising the steps: readingtable of contents data from the medium; computing a cryptographic hashvalue of the concatenation of the lengths of each track on the medium;and truncating the cryptographic hash value.
 37. In an electronic devicecontaining one or more sets of digitized content stored on a medium, themethod of generating a songprint identifier comprising the steps:averaging the two stereo channels of the digitized content to produce asingle channel; dividing the songprint region into chunks ofpredetermined size; discarding any partial chunks; de-trending eachchunk; windowing each chunk; calculating spectral components for eachchunk; computing a first portion of the songprint identifier; andcomputing a second portion of the songprint identifier;
 38. The methodof claim 37, wherein the step of windowing each chunk further comprisesa Hanning window.
 39. The method of claim 37, wherein the step ofcalculating spectral components for each chunk further comprises a FastFourier Transform function.
 40. The method of claim 37, wherein the stepof computing a first portion of the songprint identifier furthercomprising of calculating the mean of corresponding spectral componentsfrom each chunks.
 41. The method of claim 37, wherein the step ofcomputing a second portion of the songprint identifier is furthercomprised of calculating the standard deviation of correspondingspectral components from each chunk.
 42. In a system comprising acommunications network, at least one of a plurality of network serverscomprised of a verification database comprising at least one mastertable of contents identifiers for each of a corresponding plurality ofsets of digitized content, the master table of contents identifierfurther comprised of data stored in fields, and least one plurality ofcomputers comprising at least one of a plurality of sets of digitizedcontent, the method of selecting sets of digitized content from theverification database comprising the steps: the network server sortingthe verification database by fields contained in the master table ofcontents identifiers; receiving at least one table of contentsidentifier from at least one of the plurality of computers; extractingdata from the at least one received table of contents identifierscorresponding to the field used in the sort; selecting an entry in thesorted verification database containing data in the field used in thesort that best matches the extracted data; determining if theneighboring data in the sorted verification database is within aspecified limit from the extracted data; and selecting all entries inthe sorted verification database containing data in the filed used inthe sort that is within the specified limit from the extracted data. 43.The method of claim 42, wherein the step of sorting the verificationdatabase by fields is further comprised of sorting based on the mediumlength.
 44. The method of claim 42, wherein the step of sorting theverification database by fields is further comprised of sorting based onthe length of the first digitized content.
 45. The method of claim 42,wherein the step of sorting the verification database by fields isfurther comprised of sorting based on the length of the last digitizedcontent.
 46. The method of claim 42, wherein the step of sorting theverification database by fields is further comprised of sorting based onthe length of the longest digitized content.
 47. The method of claim 42,wherein the step of sorting the verification database by fields isfurther comprised of sorting based on the length of the shortestdigitized content.
 48. In a system comprising a communications network,at least one of a plurality of network servers comprised of averification database comprising at least one master songprintidentifier for each of a corresponding plurality of sets of digitizedcontent, and least one of a plurality of computers comprising at leastone of a plurality of sets of digitized content, the method of selectingsets of digitized content from the verification database comprising thesteps: receiving at least one of a plurality of songprint identifiersfrom at least one of the plurality of computers; computing theroot-mean-square difference between the master songprint identifier andthe received plurality of songprint identifiers; and selecting the setsof digitized content corresponding to the master songprint identifier inthe verification database that has the smallest root-mean-squaredifference.
 49. In a system comprising a communications network, atleast one of a plurality of network servers comprised of a verificationdatabase comprising at least one master table of contents identifiercomprised of data stored in fields, and at least one master songprintidentifier for each of a corresponding plurality of sets of digitizedcontent, and least one of a plurality of computers comprising at leastone of a plurality of sets of digitized content, the method of selectingsets of digitized content from the verification database comprising thesteps: the network server sorting the verification database by fieldscontained in the master table of contents identifiers; receiving atleast one table of contents identifier from at least one of theplurality of computers; receiving at least one songprint identifier fromthe at least one of the plurality of computers; extracting data from theat least one received table of contents identifier corresponding to thefield used in the sort; selecting a best matched entry from the sortedverification database containing data in the field used in the sort thatbest matches the extracted data; selecting entries in the sortedverification database neighboring the best matched entry containing datain the field used in the sort within a specified limit from theextracted data; and computing the root-mean-square difference betweenthe at least one received songprint identifier and the master songprintidentifier in the sorted verification database corresponding to theselected best matched entry and selected neighboring entry; andselecting the sets of digitized content corresponding to the mastersongprint identifier in the verification database that has the smallestroot-mean-square difference.
 50. In a system comprising a communicationsnetwork, at least one of a plurality of network servers comprised of averification database comprising at least one of a plurality of masterhash data identifiers generated randomly from each of a correspondingplurality of sets of digitized content, and least one of a plurality ofcomputers comprising at least one of a plurality of sets of digitizedcontent, the method of verifying the sets of digitized contentcomprising the steps: the network server receiving data from one of theplurality of computers; calculating a hash data identifier for thereceived data; and computing the difference between the calculated hashdata identifier and the master hash data identifier in the verificationdatabase.
 51. The method of claim 50, wherein the step of computing thedifference is further comprised of computingthe difference between theroot-mean-square of the calculated hash data identifier and theroot-mean-square of the master hash data identifier in the verificationdatabase.
 52. In a system comprising a communications network, at leastone of a plurality of network servers comprised of a verificationdatabase comprising at least one of a plurality of master songprintsgenerated randomly from each of a corresponding plurality of sets ofdigitized content, and least one of a plurality of computers comprisingat least one of a plurality of sets of digitized content, the method ofverifying the sets of digitized content comprising the steps: thenetwork server receiving data from at least one of the plurality ofcomputers; calculating a songprint identifier for the received data; andcomputing the root-mean-square difference between the calculatedsongprint identifier and the master songprint identifier in theverification database.
 53. In a system comprising a communicationsnetwork, at least one of a plurality of network servers comprised of averification database comprising at least one of a plurality of masterhash data identifiers and at least one of a plurality of mastersongprints generated randomly from each of a corresponding plurality ofsets of digitized content, and least one of a plurality of computerscomprising at least one of a plurality of sets of digitized content, themethod of verifying the sets of digitized content comprising the steps:the network server receiving data from one of the plurality ofcomputers; calculating a hash data identifier for the received data;computing the difference between the calculated hash data identifier andthe master hash data identifier in the verification database; andcomputing the root-mean-square difference between the calculatedsongprint identifier and the master songprint identifier in theverification database.
 54. The method of claim 53, wherein the step ofcomputing the difference is further comprised of computing thedifference between the root-mean-square of the calculated hash dataidentifier and the root-mean-square of the master hash data identifierin the verification database.